package com.asialjim.wechat.message;

import com.asialjim.wechat.pojo.account.WeChatAccountType;

/**
 * <h1><em>ASIAL JIM JAVA DOC</em></h1><hr/>
 * <h2>CLASS DESCRIPTION <i>[ NAME: WeChatMessageType ]</i></h2><strong>
 * <p> we chat message type
 * </strong><p><p><em>Copyright &copy; Asial Jim Co., LTD</em><hr/>
 *
 * @author Asial Jim &nbsp;&nbsp; <span>Email:<a href="mailto:asialjim@hotmail.com">asialjim@hotmail.com</a> &nbsp;&nbsp; <a href="asialjim@qq.com">asialjim@qq.com</a></span>
 * @version 1.0.0
 * @since 2021/1/26   &nbsp;&nbsp; JDK 8
 */
public interface WeChatMessageType {

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: getAccountType ]</i></h3>
     * 获取微信公众平台账号类型（公众号，小程序，小游戏，公众平台，支付平台，企业微信等）
     * @return {@link WeChatAccountType accountType}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/1/26 17:45
     */
    WeChatAccountType getAccountType();

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: getMsgType ]</i></h3>
     * 获取消息类型
     * @return {@link String messageType}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/1/26 17:45
     */
    String getMsgType();

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: getEventType ]</i></h3>
     * 获取事件类型
     * @return {@link String we chat event message type}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/1/26 17:46
     */
    String getEventType();

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: getMessageClass ]</i></h3>
     * 获取消息类型
     * @return {@link Class<? extends   BaseWeChatMessage> message class}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/1/26 17:46
     */
    Class<? extends BaseWeChatMessage> getMessageClass();

    String name();
}